package com.example.yiwei.crm.view.activity.coordinationActivity;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;
import com.example.yiwei.crm.R;
import com.example.yiwei.crm.base.BaseActivity;
import com.example.yiwei.crm.base.baseClass;
import com.example.yiwei.crm.entity.ClockEntity;
import com.example.yiwei.crm.util.NetWorkUtils;
import com.example.yiwei.crm.util.SC;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.List;

public class ClockActivty extends BaseActivity{
 private ImageView img_back,img_clock;
    String picName;
    public LocationClient mLocationClient = null;
    public MapView mapView = null;
    public BaiduMap baiduMap = null;
//    StringBuffer sc;
    private SharedPreferences sp;
    String address;
    String str;
    List<ClockEntity> list;
    private String jd,wd;
    String time;
    public int tag=0;
    StringBuffer sb;
//    public BDLocationListener myListener1 = new MyLocationListener();

    // 定位相关声明
    //自定义图标
    BitmapDescriptor mCurrentMarker = null;
    boolean isFirstLoc = true;// 是否首次定位
    public BDLocationListener myListener = new BDLocationListener() {
        public void onReceiveLocation(BDLocation location) {

            // map view 销毁后不在处理新接收的位置
            if (location == null || mapView == null)
                return;
            MyLocationData locData = new MyLocationData.Builder()
                    .accuracy(location.getRadius())
                    // 此处设置开发者获取到的方向信息，顺时针0-360
                    .direction(100).latitude(location.getLatitude())
                    .longitude(location.getLongitude()).build();
            baiduMap.setMyLocationData(locData);    //设置定位数据
             sb = new StringBuffer(256);
//            sb.append("time : ");
            sb.append(location.getTime()+",");
            sb.append(location.getLocationDescribe()+",");// 位置语义化信息
            sb.append(location.getLatitude()+",");    //获取纬度信息
            sb.append(location.getLongitude());    //获取经度信息
                LatLng ll = new LatLng(location.getLatitude(),
                        location.getLongitude());
                MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(ll, 16);   //设置地图中心点以及缩放级别
                baiduMap.animateMapStatus(u);
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SDKInitializer.initialize(getApplication());
        setContentView(R.layout.activity_clock_activty);
        mapView = (MapView) this.findViewById(R.id.bmapView); // 获取地图控件引用
        baiduMap = mapView.getMap();
        img_back= (ImageView) findViewById(R.id.clock_img_back);
        img_clock= (ImageView) findViewById(R.id.clock_img_daka);
        sp = getSharedPreferences("login", Context.MODE_PRIVATE);
        //开启定位图层
        baiduMap.setMyLocationEnabled(true);
        mLocationClient = new LocationClient(getApplicationContext()); // 实例化LocationClient类
        mLocationClient.registerLocationListener(myListener); // 注册监听函数
        initLocation(); //设置定位参数
        mLocationClient.start(); // 开始定位


        img_back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
        img_clock.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (sb!=null){
                    str=sb.toString();
                    String [] strs=str.split(",");
                    time=strs[0];
                    address=strs[1];
                    jd=strs[2];
                    wd=strs[3];
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            SC sc=new SC();
                            JSONObject object=sc.storage(sp);
                            try {
                                object.put("UAB01",sp.getString("CID01",null));
                                object.put("UAM02",time);
                                object.put("UAM03",address);
                                object.put("CID03",sp.getString("CID03",null));
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                            String json=object.toString();
                            String result= NetWorkUtils.getCount(baseClass.clock_url,json);
                            try {
                                JSONObject object1=new JSONObject(result);
                                String boolen=object1.getString("ifsuccess");
                                if ("true".equals(boolen)){
                                    runOnUiThread(new Runnable() {
                                        @Override
                                        public void run() {
                                            Toast.makeText(ClockActivty.this, "打卡成功"+time, Toast.LENGTH_SHORT).show();
                                            finish();

                                        }
                                    });
                                }else{
                                    Toast.makeText(ClockActivty.this, "打卡失败，请检查网络后重试！", Toast.LENGTH_SHORT).show();
                                }
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                        }
                    }).start();

                }else{
                    Toast.makeText(ClockActivty.this, "网络较差，请重试！", Toast.LENGTH_SHORT).show();
                }
            }
        });
                //控制截图的大小
//                Rect rect = new Rect(0, 0, 1300, 1300);// 左xy 右xy
//                baiduMap.snapshotScope(null, new BaiduMap.SnapshotReadyCallback() {
//                    public void onSnapshotReady(Bitmap snapshot) {
//                        File file = new File("/mnt/sdcard/testall300.png");
//                        FileOutputStream out;
//                        try {
//                            out = new FileOutputStream(file);
//                            if (snapshot.compress(Bitmap.CompressFormat.PNG, 100, out)) {
//                                out.flush();
//                                out.close();
//                            }
//                            Toast.makeText(ClockActivty.this, "屏幕截图成功，图片存在: " + file.toString(),
//                                    Toast.LENGTH_SHORT).show();
//                        } catch (FileNotFoundException e) {
//                            e.printStackTrace();
//                        } catch (IOException e) {
//                            e.printStackTrace();
//                        }
//                    }

//                });

    }
    protected void onDestroy() {
        //退出时销毁定位
        mLocationClient.stop();
        baiduMap.setMyLocationEnabled(false);
        // TODO Auto-generated method stub
        super.onDestroy();
        mapView.onDestroy();
        mapView = null;
        mLocationClient.stop();
    }

    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        mapView.onResume();
    }

    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        mapView.onPause();
    }
    /**
     * 设置定位参数
     */
    private void setLocationOption() {
        LocationClientOption option = new LocationClientOption();
        option.setOpenGps(true); // 打开GPS
        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);// 设置定位模式
        option.setCoorType("bd09ll"); // 返回的定位结果是百度经纬度,默认值gcj02
        option.setScanSpan(1); // 设置发起定位请求的间隔时间为5000ms
        option.setIsNeedAddress(true); // 返回的定位结果包含地址信息
        option.setNeedDeviceDirect(true); // 返回的定位结果包含手机机头的方向
        mLocationClient.setLocOption(option);

    }
    private void initLocation(){
        LocationClientOption option = new LocationClientOption();
        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy
        );//可选，默认高精度，设置定位模式，高精度，低功耗，仅设备
        option.setCoorType("bd09ll");//可选，默认gcj02，设置返回的定位结果坐标系
        int span=1000;
        option.setScanSpan(span);//可选，默认0，即仅定位一次，设置发起定位请求的间隔需要大于等于1000ms才是有效的
        option.setIsNeedAddress(true);//可选，设置是否需要地址信息，默认不需要
        option.setOpenGps(true);//可选，默认false,设置是否使用gps
        option.setLocationNotify(true);//可选，默认false，设置是否当GPS有效时按照1S/1次频率输出GPS结果
        option.setIsNeedLocationDescribe(true);//可选，默认false，设置是否需要位置语义化结果，可以在BDLocation.getLocationDescribe里得到，结果类似于“在北京天安门附近”
        option.setIsNeedLocationPoiList(true);//可选，默认false，设置是否需要POI结果，可以在BDLocation.getPoiList里得到
        option.setIgnoreKillProcess(false);//可选，默认true，定位SDK内部是一个SERVICE，并放到了独立进程，设置是否在stop的时候杀死这个进程，默认不杀死
        option.SetIgnoreCacheException(false);//可选，默认false，设置是否收集CRASH信息，默认收集
        option.setEnableSimulateGps(false);//可选，默认false，设置是否需要过滤GPS仿真结果，默认需要
        mLocationClient.setLocOption(option);
    }


}
